go_router との併用で showDialog を閉じるときに Navigator を使っていいのか
A. OK!!!
[Session/5] 天気情報取得時の例外発生時に AlertDialog を表示する by daichikuwa0618 · Pull Request #18 · daichikuwa0618/flutter-weather-app · GitHub
- そもそも
showDialog
はNavigator
を呼び出して表示している- 実装見れば分かる: showDialog function - material library - Dart API
return Navigator.of(context, rootNavigator: useRootNavigator).push<T>(DialogRoute<T>(...)
- 従って、
GoRouter
ではなくNavigator
の API を呼び出して非表示にすること自体は自然な実装のはず - また、 go_router 公式でも
showDialog
呼び出し時はNavigator.pop
を直接呼び出しているサンプルがある
以上の理由から妥当な実装と思っている。
また、実は GoRouter
は内部で NavigatorState
を操作しているため、実はここは GoRouter.of(context).pop
を呼び出しても動く